In a packet communications system where diverse types of data utilize the same resources, some provisions are desirable for ensuring certain types of data are delivered in a timely manner. For real-time audio, for example, voice for a two-way conversation, such as a voice over IP (Internet protocol) or VoIP, it is desirable to have minimum delay and jitter. On the other hand, other data, for example a file download, may not have similar time or quality of service constraints.
One known method for ensuring a certain level of quality of service for a communications system with diverse data types is to set a priority level based upon the type of data being sent. For example, in such systems, a voice data packet has a higher priority for resources, such as a communications link, than a data packet that does not have real-time constraints. However, a priority scheme alone often does not provide the quality of service required. In one particular case, if a low priority packet consumes a link for an extremely long period of time, for example if the packet is relatively large, then a higher priority packet such as a voice packet that arrives for communication after a lower priority packet has obtained use of the link may be undesirably delayed. A known solution for this problem is to fragment all packets to be no greater than a certain size. That is, large packets are broken up and segregated into smaller packets of a certain size. This process of fragmentation is optimized by an a priori determination of a maximum or optimal packet size based on a size of the higher priority packets, a link speed, delay and jitter requirements.
Unfortunately, in a complex and diverse communications system, packet size, link speed, delay and jitter requirements often change or may not be known. In such situations, it is not possible to predict a priori an optimal fragmentation scheme.
Therefore, a need exists for an improvement to ensure a certain quality of service for diverse data types in packet systems where link speed, packet size, delay, jitter and other requirements vary or are unknown.